halcon模板匹配实践(5)使用橡皮擦涂抹功能实现减少模板匹配特征 您所在的位置:网站首页 硬盘二维码 为什么涂抹 halcon模板匹配实践(5)使用橡皮擦涂抹功能实现减少模板匹配特征

halcon模板匹配实践(5)使用橡皮擦涂抹功能实现减少模板匹配特征

2024-06-03 15:26| 来源: 网络整理| 查看: 265

本篇文章非原创,而是转载:

https://blog.csdn.net/weixin_44490080/article/details/105243333

但是文末附上了链接,那个是本人使用的Qt开发的涂抹工具。

功能:

1、按住鼠标左键拖动鼠标进行擦除工作,松开鼠标停止擦除

2、继续按住鼠标左键重复功能1,鼠标右键退出

这里使用到的halcon是17.12版本的对应同版本的HDevelop,在API中就找到两个鼠标事件:

get_mbutton 和 get_mposition

前者等待鼠标按下,后者无需等待直接监听鼠标并且都是一次触发一次返回,这样一来实现上面的功能就要挠一挠脑壳了。

halcon实现:

read_image (Image, 'printer_chip/printer_chip_01') *选择区域 draw_rectangle1 (200000, Row1, Column1, Row2, Column2) gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) reduce_domain (Image, Rectangle, ImageReduced) dev_clear_window () dev_display (ImageReduced) **橡皮擦功能,特征屏蔽*********************************** *橡皮擦大小 EraserSize:=10 *橡皮擦形状 EraserType:='rectangle' gen_empty_obj(region_removeds) *橡皮擦路过的坐标集 Rows := [] Cols := [] *擦除工作 Button:=0 set_display_font (200000, 26, 'mono', 'true', 'false') disp_message (200000, '按下鼠标进行擦除功能,松开鼠标将结束', 'window', 12, 12, 'red', 'false') while (Button == 0) get_mbutton (200000, Row, Column, Button) while (Button == 1) get_mposition (200000, Row, Column, Button) Rows := [Rows,Row] Cols := [Cols,Column] *生成橡皮擦擦过的区域 if(EraserType=='rectangle') gen_rectangle2 (Eraser,Row, Column,0, EraserSize,EraserSize) else gen_circle (Eraser, Row, Column, EraserSize) endif *橡皮擦区域合并 union2(region_removeds,Eraser,region_removeds) endwhile endwhile *区域相减 difference (ImageReduced, region_removeds, RegionDifference) reduce_domain (ImageReduced, RegionDifference, ImageReduced) **创建模板****************************************************** create_shape_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID) find_shape_model (Image, ModelID, rad(-180), rad(180), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score) *获取模板轮廓 get_shape_model_contours (ModelContours, ModelID, 1) dev_clear_window () dev_display (Image) dev_set_line_width (2) *将模板映射到目标上 vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2D) affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D)

结果反馈(以图中二维码区域为例):

没有擦除过的模板特征反馈:

橡皮擦功能:

使用了橡皮擦功能的反馈:

---

推荐阅读

我的Qt作品(5)使用Qt+Halcon实现模板匹配;支持ROI框选/橡皮擦功能

https://blog.csdn.net/libaineu2004/article/details/108912760



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有